<?php

/**
 *
 * @export Modules
 * @export-metadata RequiredRoles:ROLE_STUDENT
 */
class InformacionIdiomas extends Module {

    public function index() {
        $this->ShowInformacionIdiomas();
    }

    public function ShowInformacionIdiomas() {
        /* @var $student Estudiantes */
        $student = $this->model->students->GetById($this->currentUser->getName());

        $nivelesIdiomas = array_flip(NivelesIdiomas::values());

        $this->assign("addIdiomas", $this->route->action("add", array("ajax" => true)));
        $this->assign("editIdiomas", $this->route->action("edit", array("ajax" => true)));
        $this->assign("deleteIdiomas", $this->route->action("delete", array("ajax" => true)));

        $this->assign("manejoIdiomas", $student->getManejoIdiomas());
        $this->assign("student", $student);
        $this->assign("nivelesIdiomas", $nivelesIdiomas);
        $this->assign("idiomas", $this->model->languages->GetAll());

        $this->display("ShowInformacionIdiomas");
    }

    public function add() {
        if ($this->request->submitted()) {
            Loader::using("models::entities::HistorialLaboral");
            Loader::using("models::entities::ManejoIdiomas");

            $manejoIdiomas = new ManejoIdiomas();

            $manejoIdiomasPK = new ManejoIdiomasPk();
            $manejoIdiomasPK->setCodigoInterno($this->request->post("CodigoInterno"));
            $manejoIdiomasPK->setCodigoIdioma($this->request->post("CodigoIdioma"));
            $manejoIdiomas->setManejoIdiomasPk($manejoIdiomasPK);

            $idioma = new Idiomas();
            $idioma->setCodigoIdioma($this->request->post("CodigoIdioma"));
            $manejoIdiomas->setIdioma($idioma);

            $this->modify($manejoIdiomas);

            echo $this->model->languages->addLanguageSkill($manejoIdiomas);
        }
        $this->ShowInformacionIdiomas();
    }

    public function edit() {
        
        $manejoIdiomas = $this->model->languages->getLanguageSkill($this->getPK());

        $this->modify($manejoIdiomas);

        $this->model->languages->updateLanguageSkill($manejoIdiomas);
        $this->ShowInformacionIdiomas();
    }

    public function delete() {
        $menejoIdiomasPk = $this->getPK();
        $this->model->languages->deleteLanguageSkill($menejoIdiomasPk);
        $this->ShowInformacionIdiomas();
    }

    private function getPK() {
        Loader::using("models::entities::ManejoIdiomasPk");
        $manejoIdiomasPK = new ManejoIdiomasPk();
        $manejoIdiomasPK->setCodigoInterno($this->request->post("CodigoInterno"));
        $manejoIdiomasPK->setCodigoIdioma($this->request->post("CodigoIdioma"));

        return $manejoIdiomasPK;
    }

    private function modify(ManejoIdiomas &$manejoIdiomas) {
        $manejoIdiomas->setEscribe($this->request->post("EscribeIdioma"));
        $manejoIdiomas->setHabla($this->request->post("HablaIdioma"));
        $manejoIdiomas->setLee($this->request->post("LeeIdioma"));
    }

}

?>
